The present disclosure relates generally to memory management of virtual machines. Virtualization may be used to provide some physical components as logical objects in order to allow running various software modules, for example, multiple operating systems, concurrently and in isolation from other software modules, on one or more interconnected physical computer systems. Virtualization may be achieved by running a software layer, often referred to as a hypervisor, above the hardware and below the virtual machines.
Computer systems may run virtual machines with memory allocated by a hypervisor. With memory overcommit, virtual machines and their associated guest operating systems may “think” that they have access to more memory than is actually assigned by the hypervisor. When a guest operating system (OS) needs additional memory, the guest OS may use various techniques to free up additional memory.